Surface GeomFillSurface/fr

Other languages:

Surface Remplir entre les courbes limites

Emplacement du menu
Surface → Fill boundary curves
Ateliers
Surface
Raccourci par défaut
Aucun
Introduit dans la version
0.17
Voir aussi
Aucun

Description

Surface Remplir entre les courbes limites crée une surface paramétrique à partir de deux, trois ou quatre arêtes de limite en essayant de créer une transition douce entre elles.

A gauche : arêtes utilisées pour générer une surface avec l'outil Remplir entre les courbes limites, 4 arêtes connectées, 3 arêtes connectées et 2 arêtes déconnectées.
A droite : surface résultante de l'utilisation de 4, 3 et 2 arêtes respectivement.

Utilisation

  1. Appuyez sur la touche Fill boundary curves.
  2. Sélectionnez les arêtes dans la Vue 3D. Les bords doivent se connecter afin de donner un profil fermé.
  3. Appuyez sur OK.

Remarque : une fois créée, il n'est pas possible d'appliquer des contraintes supplémentaires à la surface créée.

Options

Fill type : Stretch, Coons ou Curved.

Propriétés

Surface Remplir entre les courbes limites (classe Surface::GeomFillSurface) est dérivée de la classe de base Part Feature (classe Part::Feature via la sous-classe Part::Spline), elle partage donc toutes les propriétés de cette dernière.

Outre les propriétés décrites dans Part Feature, Surface Remplir entre les courbes limites a les propriétés suivantes dans l'éditeur de propriétés.

Données

Base

Vue

Base

Torsion de la surface

La forme de la surface dépend de la direction des arêtes choisies; si des arêtes sont sélectionnées et que le résultat est une surface qui "se tord" sur elle-même, l'une des arêtes peut avoir besoin de sa liste de sommets dans l'ordre inverse. Une surface qui se tord sur elle-même aura probablement des auto-intersections et sera donc une forme invalide. Ceci peut être vérifié avec Part Vérifier la géométrie.

Par exemple, si deux courbes ont les points

curve1 = [a, b, c, d]
curve2 = [e, f, g]

et la surface résultante après avoir utilisé Remplir entre les courbes limites ou Surface Sections est une surface torsadée, vous pouvez créer une troisième courbe égale à l'une des deux courbes d'origine mais avec une liste de points inversée.

Soit

curve1 = [a, b, c, d]
curve3 = [g, f, e]

ou

curve3 = [d, c, b, a]
curve2 = [e, f, g]

devrait fonctionner pour générer une surface qui non tordue.

En termes pratiques, cela signifie que toutes les arêtes utilisées pour générer une surface doivent être créées de préférence dans le même sens horaire ou anti-horaire. Suivre cette règle simple garantit généralement que la surface suivra la direction la plus lisse et ne se tordra pas.

Lorsque la propriété VueLighting de la surface est One side, une face sera coloriée complètement en noir si sa direction normale pointe dans la Vue 3D (loin du visualiseur actuel) indiquant une face inversée par rapport aux autres faces colorées.

A gauche : les arêtes limites sont orientées dans la même direction et ainsi la surface générée est lisse.
A droite : les arêtes limites ont des directions opposées et donc la surface générée se tord sur elle-même, ce qui entraîne des auto-intersections.

Script

Voir aussi : FreeCAD Script de base.

L'outil Surface Remplir entre les courbes limites peut être utilisé dans des macros et depuis la console Python en ajoutant l'objet Surface::GeomFillSurface.

import FreeCAD as App
import Draft

doc = App.newDocument()

a = App.Vector(-140, -100, 0)
b = App.Vector(175, -108, 0)
c = App.Vector(200, 101, 0)
d = App.Vector(-135, 107, 70)

points1 = [a, App.Vector(-55, -91, 65), App.Vector(35, -85, -5), b]
obj1 = Draft.make_bspline(points1)

points2 = [b, App.Vector(217, -45, 55), App.Vector(217, 35, -15), c]
obj2 = Draft.make_bspline(points2)

points3 = [c, App.Vector(33, 121, 55), App.Vector(0, 91, 15), App.Vector(-80, 121, -40), d]
obj3 = Draft.make_bspline(points3)

points4 = [d, App.Vector(-140, 0, 45), a]
obj4 = Draft.make_bspline(points4)
doc.recompute()

surf = doc.addObject("Surface::GeomFillSurface", "Surface")
surf.BoundaryList = [(obj1, "Edge1"),
                     (obj2, "Edge1"),
                     (obj3, "Edge1"),
                     (obj4, "Edge1")]
doc.recompute()